package com.qyb.quartz.demo1;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

/**
 * *************************************************************************************************
 * <p/>
 * 实现功能：SimpleTrigger的例子 - 每间隔5秒运行。
 * <p>
 * ------------------------------------------------------------------------------------------------
 * 版本          变更时间             变更人                     变更原因
 * ------------------------------------------------------------------------------------------------
 * 1.0.00      2017/7/31 9:56      秦有宝                     新建
 * <p/>
 * *************************************************************************************************
 */
/*
 定义Quartz触发器，当Quartz运行在上面的Quartz作业。

像老版本的Quartz，仍然有两种类型的触发器在Quartz2，但API有些变化：

    SimpleTrigger – 允许设置开始时间，结束时间，重复间隔。
    CronTrigger – 允许UNIX cron表达式来指定日期和时间来运行作业。

 */

public class SimpleTriggerExample {

    public static void demo1() throws SchedulerException {

        // Quartz 1.6.3
        // JobDetail job = new JobDetail();
        // job.setName("dummyJobName");
        // job.setJobClass(HelloJob.class);

        JobDetail job = JobBuilder.newJob(HelloJob.class)
                .withIdentity("dummyJobName", "group1").build();

        // Quartz 1.6.3
        // SimpleTrigger trigger = new SimpleTrigger();
        // trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
        // trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
        // trigger.setRepeatInterval(30000);

        // Trigger the job to run on the next round minute(5秒执行一次）
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("dummyTriggerName", "group1")
                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever())
                .build();

        // schedule it
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);
    }

    public static void demo2() throws SchedulerException {

    }
}
